package com.Maykk.Demo05;

/**
 * @ClassName: PrintTest
 * @Description: TODO 输出测试类
 * @Author: MaykkStar@163.com
 */
public class PrintTest {
    public static void main(String[] args) {
        // 匿名内部类
        runPrinter(new Printer() {
            @Override
            public void printUpperCase(String str) {
                System.out.println(str.toUpperCase());
            }
        });

        // 完整 Lambda
        runPrinter((String str) -> {
            System.out.println(str.toUpperCase());
        });

        // 省略 Lambda
        runPrinter(str -> System.out.println(str.toUpperCase()));


        // 引用对象 的实例方法替换 Lambda,会将所有的形参作为引用方法的实参传递（隐式）
        runPrinter(new PrintUpper()::printUpper);

    }

    public static void runPrinter(Printer p) {
        p.printUpperCase("Hello JavaSE Lambda！~");
    }
}
